// pages/setup/setup.js
import { getUserInfo, getWxUserInfo, setWxUserInfo, removeUserInfo, removeUserGrade } from '../../../utils/userInfo';
import shuffle from '../utils/shufflePhone';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        isOpenid: false,
        phone: '去登录',
        showCheckBind: false, // 是否正在进行账号检测
    },
    // 去登录
    goLogin() {
        wx.navigateBack({
            delta: 1
        })
    },
    // 去绑定
    goBind() {
        if (getWxUserInfo()) {
            // 先看看有没有获取微信用户的信息
            // 获取微信用户信息
            const { nickName, avatarUrl, openid } = getWxUserInfo();
            const wxAvatarUrl = avatarUrl;
            const wxNickName = nickName;
            const wxuser = JSON.stringify({ openid, wxAvatarUrl, wxNickName });
            wx.navigateTo({
                url: '../bindUser/bindUser?wxuser=' + wxuser,
            })
        } else {
            // 没有的话，你需要先授权
            wx.getUserProfile({
                desc: '用于完善会员资料',
                success: (res) => {
                    // 调云函数获取微信用户openid
                    wx.cloud.callFunction({
                        name: 'getProfile',
                        complete: res2 => {
                            console.log('callFunction test result: ', res2.result)
                            const { openid } = res2.result;
                            // 获取微信用户头像和昵称
                            setWxUserInfo({ ...res.userInfo, openid }); // wx用户信息存入缓存
                        },
                    });
                }
            });
        }
    },

    // 账号解绑
    removeBind() {
        const that = this;
        const { isOpenid } = that.data;
        const { phone, password } = getUserInfo();
        if (isOpenid) {
            wx.showModal({
                title: '请确认是否账号解绑',
                content: '解除后将不能再使用微信账号进行登录',
                confirmColor: '#FF0000',
                success(res) {
                    if (res.confirm) {
                        // 生成请求数据，使用云函数将数据用户数据存入数据库
                        wx.cloud.callFunction({
                            // 云函数名称
                            name: 'reqUserAPI',
                            // 传给云函数的参数
                            data: {
                                reqName: 'removeAccountBind', // 声明类型
                                phone,
                                password,
                                nickname: '用户' + shuffle(phone), // 用户名脱敏
                            },
                        })
                            .then(res => {
                                const { isAccountBind } = res.result;
                                if (isAccountBind) {
                                    Toast({
                                        type: 'success',
                                        message: '解绑成功，请重新登录',
                                        onClose: () => {
                                            // 退出登录
                                            removeUserInfo();
                                            removeUserGrade();
                                            wx.removeStorageSync('gradeDesc');
                                            wx.removeStorageSync('classArr');
                                            wx.reLaunch({
                                                url: '../../../pages/mine/mine',
                                            })
                                        },
                                    });
                                } else {
                                    Toast.fail('解除绑定失败');
                                }
                                console.log(res.result);
                            })
                            .catch(console.error)
                    }
                }
            })
        } else {
            wx.showToast({
                title: '当前账号没有绑定微信',
                icon: 'none',
                duration: 2000
            })
        }
    },

    // 账号检测，检测微信账号，微信头像和昵称是否修改了
    checkBind() {
        if (getUserInfo()) {
            const { isOpenid } = this.data;
            if (isOpenid) {
                const { nickname, avatar } = getUserInfo();
                const { nickName, avatarUrl } = getWxUserInfo();
                console.log(nickName, avatarUrl, nickname, avatar);
                let isChangeNickName = false; // 昵称是否变化
                let isAvatar = false; // 头像是否改变
                if (nickName !== nickname) isChangeNickName = true;
                if (avatarUrl !== avatar) isAvatar = true;
                this.setData({
                    showCheckBind: true,
                });
                setTimeout(() => {
                    this.setData({
                        showCheckBind: false,
                    }, () => {
                        if (!isChangeNickName && !isAvatar) Toast('账号检测成功，一切正常');
                        if (!isChangeNickName && isAvatar) Toast('微信头像发生了改变，请重新绑定');
                        if (isChangeNickName && !isAvatar) Toast('微信昵称发生了改变，请重新绑定');
                        if (isChangeNickName && isAvatar) Toast('微信头像和昵称都已经发生改变，请重新绑定');
                    });
                }, 3500)
            } else {
                wx.showToast({
                    title: '当前账号没有绑定微信',
                    icon: 'none',
                    duration: 2000
                })
            }
        } else {
            wx.showToast({
                title: '请先登录',
                icon: 'none',
                duration: 2000
            })
        }

    },

    // 退出当前账号
    exit() {
        // 获取用户信息
        const isUserInfo = getUserInfo();
        if (isUserInfo) {
            wx.showModal({
                title: '确认退出该账号',
                confirmColor: '#FF0000',
                success(res) {
                    if (res.confirm) {
                        removeUserInfo();
                        removeUserGrade();
                        wx.removeStorageSync('gradeDesc');
                        wx.removeStorageSync('classArr');
                        wx.reLaunch({
                            url: '../../../pages/mine/mine',
                        })
                    }
                }
            })
        } else {
            wx.showToast({
                title: '请先登录',
                icon: 'none',
                duration: 2000
            })
        }
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 查看当前有没有登录
        if (getUserInfo()) {
            const { openid, phone } = getUserInfo();
            this.setData({
                phone
            })
            // 检测当前账号是否与微信已经绑定了
            // 如果不存在openid，说明没有绑定
            if (openid === '' || openid === undefined || openid === null) {
                this.setData({
                    isOpenid: false,
                })
            } else {
                this.setData({
                    isOpenid: true,
                })
            };
        }
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})